﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Net.Chirash.Twitter.TwitterDatabase;

namespace Net.Chirash.Twitter.TwitterClient
{
    public class UserListOption
    {
        #region Public Properties

        /// <summary>
        /// 取得するユーザ
        /// </summary>
        public User User { get; set; }

        /// <summary>
        /// ページ。1ページを100件単位で取得できます。TwitterAPIの仕様では必ずしも100件ではないそうです。
        /// </summary>
        public int Page { get; set; }

        /// <summary>
        /// Trueを指定すると、各ユーザの最新Statusを取得しません。
        /// </summary>
        public bool Lite { get; set; }

        /// <summary>
        /// Since以降につぶやいたユーザから取り出します。
        /// </summary>
        public DateTime Since { get; set; }

        /// <summary>
        /// カーソル。カーソルIDから100件取得します。-1を指定すると先頭から100件取得します。
        /// </summary>
        public long Cursor { get; set; }

        #endregion

        #region Constructors

        public UserListOption()
        {
            Cursor = -1;
        }

        #endregion

        #region Public Methods

        public override string ToString()
        {
            var sb = new System.Text.StringBuilder(32);
            sb.Append('?');

            if (User != null)
            {
                sb.AppendFormat("user_id={0}&", User.UserID);
            }
            if (Page > 0)
            {
                sb.AppendFormat("page={0}&", Page);
            }
            if (Lite == true)
            {
                sb.AppendFormat("lite={0}&", Lite.ToString());
            }
            if (Cursor >= -1)
            {
                sb.AppendFormat("cursor={0}&", Cursor);
            }

            if (sb.Length == 1) //'?' only
                return "";
            else
                return sb.Remove(sb.Length - 1, 1).ToString();
        }

        #endregion
    }
}
